/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hoja.de.trabajo.pkg6;

/**
 *
 * @author CarlosAndre
 */
import java.util.Scanner;
public class Principal {
     /**
     * @param args the command line arguments
     */
    
    static Integer min;
    static Integer max;
    public static void main(String[] args) {
        // TODO code application logic here

        
        Scanner op = new Scanner(System.in);
        Heap lista;
        Nodo nodo;
        String cadena;
        System.out.println("+-------------------------------------------------+");
        System.out.println("+------------------   Bienevenido   --------------+");
        System.out.println("+-------------------------------------------------+");
        System.out.println("");
        System.out.print("Ingrese la cadena a evaluar: ");
        cadena = op.nextLine();
        lista = new Heap(cadena.length());
        
        System.out.println("");
        System.out.println("+---  El resultado de la cadena es  ---+");
        System.out.println("");
        System.out.println("Caracter |  Frecuencia | Codigo");
        System.out.println("-------------------------------");
   
        for(int i =0; i < cadena.length(); i++) {            
            Nodo tree = new Nodo(cadena.charAt(i));
            nodo = lista.remove(tree);
            if (nodo == null) {
                lista.insert(tree);
           
            } else {
                nodo.incRepet();
                lista.insert(nodo);

            }


        }

        while(lista.getAmount() > 1) {
            Nodo ptree = new Nodo();
            int lad1, lad2;
            lad1= lista.seeFirst().getRepet() ;
            ptree.setLeft(lista.remove());
            lad2 = lista.seeFirst().getRepet(); 
            ptree.setRigth(lista.remove());
            ptree.setRepet(lad1+lad2);           
            lista.insert(ptree);
        }
      
        lista.seeFirst().route();
        lista.seeFirst().heap();
        System.out.println("");
        System.out.print("Ingrese el numero binario que desea decodificar: ");
        Scanner op1 = new Scanner(System.in);
        String cadena1;
        cadena1 = op1.nextLine();
        Decodificar d = new Decodificar();
        System.out.print("El mensaje decodificado es: ");
        d.decodifica(cadena1);
    }
 
}
